home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2002 #11
/
Amiga Plus CD - 2002 - No. 11.iso
/
Tools
/
Development
/
PowerD
/
powerd
/
source
/
x2d.d
< prev
Wrap
Text File
|
2002-10-28
|
4KB
|
125 lines
// to convert any files into PowerD compatible files
// 1.0 (21.11.2001) initial release
// 1.1 (29.4.2002) DMX: added Delay(1) to free some cpu time, recompiled
MODULE 'exec/memory','reqtools','libraries/reqtools','intuition/intuition'
OPT OSVERSION=37,OPTIMIZE
ENUM SOURCE
DEF ReqToolsBase=NIL
PROC main()
DEF myargs:PTR TO LONG,rdargs=NIL,str[256]:STRING
DEF vers='$VER: x2d v1.1 by MarK and DMX (29.4.2002)'
myargs:=[NIL,NIL]
IFN ReqToolsBase:=OpenLibrary('reqtools.library',37) THEN Raise("RTLI")
IFN rdargs:=ReadArgs('SOURCE',myargs,NIL) THEN Raise("DOS")
EStrCopy(str,IF myargs[0] THEN myargs[0] ELSE FileReq(str))
DEF filetype
IF StrCmp(str+EStrLen(str)-3,'.fd')
filetype:="fd"
ELSEIF StrCmp(str+EStrLen(str)-2,'.h')
filetype:="h"
ELSE
filetype:=NIL
ENDIF
DEF command[256]:STRING
SELECT filetype
CASE "fd"; PrintF('FileType: \s\n','fd file')
PrintF('Converting to PowerD compatible module...\n')
StringF(command,'fd2m "\s"',str)
Execute(command,NIL,NIL)
PrintF('Compiling the ascii module and generating ppc interface...\n')
IF StrCmp(str+StrLen(str)-3,'.fd') THEN str[StrLen(str)-3]:="\0"
IF StrCmp(str+StrLen(str)-4,'_lib')
str[StrLen(str)-4]:="\0"
StrAdd(str,'.m')
ENDIF
StringF(command,'dc "\s" lg t:library',str)
Execute(command,NIL,NIL)
PrintF('Generating linklib file...\n')
CompileAll('t:library')
str[StrLen(str)-2]:="\0"
StringF(command,'join t:library/#?.o as "\sbase.lib"',str)
Execute(command,NIL,NIL)
Execute('delete t:library all quiet force',NIL,NIL)
IF 1=request('Copy generated files into the PowerD subdirectories?','_Yes|_No')
StringF(command,'copy "\s.m" "\s.b" to dmodules: quiet',str,str)
Execute(command,NIL,NIL)
StringF(command,'copy "\sbase.lib" to d:lib/modules quiet',str)
Execute(command,NIL,NIL)
ENDIF
CASE "h"; PrintF('FileType: \s\n','c header file')
DEFAULT; PrintF('FileType: \s\n','unknown')
ENDSELECT
PrintF('Done. \n')
EXCEPTDO
IF rdargs THEN FreeArgs(rdargs)
IF ReqToolsBase THEN CloseLibrary(ReqToolsBase)
ENDPROC
PROC FileReq(nm:PTR TO CHAR)(PTR)
DEF name[256]:STRING,
requestedname[256]:STRING,
r:PTR TO rtFileRequester
IF r:=rtAllocRequestA(RTPREF_FILEREQ,NIL)
rtChangeReqAttr(r,
RTFI_MatchPat,'#?',
TAG_END)
IF rtFileRequest(r,name,'Select a file:',
RT_ReqPos,REQPOS_CENTERSCR,
RTFI_Flags,FREQF_PATGAD,
RTFI_OKText,'_Load',
RT_Underscore,"_",
TAG_END)
EStrCopy(requestedname,r.Dir)
AddPart(requestedname,name,255)
ReEStr(requestedname)
EStrCopy(nm,requestedname)
ENDIF
rtFreeRequest(r)
ENDIF
ENDPROC nm
MODULE 'dos/dos'
PROC CompileAll(dir:PTR TO UBYTE)
DEF info:FileInfoBlock,lock,count=0,command[256]:STRING,n=0
IF lock:=Lock(dir,-2)
IF Examine(lock,info)
IF info.DirEntryType>0
WHILE ExNext(lock,info) DO count++
ELSE PrintFault(IOErr(),'ddir')
ELSE PrintFault(IOErr(),'ddir')
IF Examine(lock,info)
IF info.DirEntryType>0
WHILE ExNext(lock,info)
StringF(command,'pasm -F 2 "\s/\s"',dir,info.FileName)
Execute(command,NIL,NIL)
Delay(1)
n++
PrintF(' \d/\d\b',n,count)
ENDWHILE
ELSE PrintFault(IOErr(),'ddir')
ELSE PrintFault(IOErr(),'ddir')
UnLock(lock)
ELSE PrintFault(IOErr(),'ddir')
ENDPROC
PROC request(body,gadgets=NIL,args=NIL)(LONG)
IF gadgets=NIL THEN gadgets:='_Continue'
IFN ReqToolsBase
RETURN EasyRequestArgs(0,[SIZEOF_EasyStruct,0,'RayDream message:',body,gadgets]:EasyStruct,0,args)
ELSE
RETURN rtEZRequest(body,gadgets,NIL,args,
RT_Underscore,"_",
RT_ReqPos,REQPOS_CENTERSCR,
RTEZ_ReqTitle,'Message:',
TAG_END)
ENDIF
ENDPROC